Microsoft SQL Server Cache Mapping

This section discusses the data type mappings and restrictions for caches stored on Microsoft SQL Server 2000, 2005, or 2008. Overrides for the 2008 version are indicated in square brackets.

SQL Server’s page size limits the number of bytes that can be stored directly in a column—so executing DDL causes an error if the resulting table requires a row size greater than this limit. The solution is to either raise the page size for the database, or to use indirect storage types such as TEXT and IMAGE. TDV chooses TEXT and IMAGE types if a value requires more than 255 bytes of storage for this reason, although SQL Server does allow VARCHAR and VARBINARY up to 8,000 bytes. Hand-tuning of the data types used in a table can improve storage efficiency.
Microsoft SQL Server TINYINT has a range 0 to 255, and TDV TINYINT is -128 to 127, so these types are not compatible.
DATETIME has only 3.33ms accuracy, so rounding error may occur.

Data Type

Preferred Native Type

Other Allowed Native Types

BIGINT

BIGINT

DECIMAL(19+,0), larger INTEGER types, VARCHAR(20+), NVARCHAR(20+)

BINARY(n)

BINARY(n);
IMAGE [if n > 255]

BINARY(n+), IMAGE

BIT

BIT

DECIMAL(1+,0), larger INTEGER types

BLOB

IMAGE

 

BOOLEAN

BIT

TINYINT, SMALLINT, INTEGER, BIGINT

CHAR(n)

CHAR(n);
TEXT [if p > 38]

CHAR(n+), NCHAR(n+), VARCHAR(n+), NVARCHAR(n+), TEXT, NTEXT

CLOB

TEXT

NTEXT

DATE

DATE [2008]
VARCHAR(10)

VARCHAR(10+)

DECIMAL(p,s)

DECIMAL(p,s);
TEXT [if p > 38]

DECIMAL(p+,s+), VARCHAR(p+3+), NVARCHAR(n+), TEXT, NTEXT

DOUBLE

FLOAT

VARCHAR(24+)

FLOAT

REAL

FLOAT, VARCHAR(24+)

INTEGER

INTEGER

DECIMAL(10+,0), larger INTEGER types, VARCHAR(20+), NVARCHAR(20+)

NUMERIC(p,s)

DECIMAL(p,s);
TEXT [if p > 38]

DECIMAL(p+,s+), VARCHAR(p+3+), NVARCHAR(p+3+), TEXT, NTEXT

OTHER

[cannot be cached]

 

SMALLINT

SMALLINT

DECIMAL(5+,0), larger INTEGER types, VARCHAR(20+), NVARCHAR(20+)

TIME

TIME [2008]
VARCHAR(15)

VARCHAR(15+)

TIMESTAMP

DATETIME2 [2008]
DATETIME

 

TINYINT

SMALLINT

DECIMAL(3+,0), larger INTEGER types, VARCHAR(20+), NVARCHAR(20+)

VARBINARY(n)

VARBINARY(n);
IMAGE [if n > 255]

VARBINARY(n+), IMAGE

VARCHAR(n)

VARCHAR(n);
TEXT [if n > 255]

VARCHAR(n+), NVARCHAR(n+), TEXT, NTEXT

XML

TEXT

VARCHAR(*) [Truncates data if column is too small], TEXT